package com.zrrd.homework._0318_0324.h1;

import java.util.Objects;

/**
 * @author WanJl
 * @version 1.0
 * @title Person
 * java属性和java变量的区别？
 * @description 1、定义一个Person类， 里面有姓名，年龄，性别，身份证号等属性。
 * 请重写equals方法，判定如果两个Person对象的身份证号如果相同则表示为同一个人。
 * 并且重写toString方法，返会Person类的所有成员变量
 * @create 2024/3/24
 */
public class Person {
    //封装--设定权限，为类中的【成员】设定权限
    // private /  default  / protected  / public
    private String id;
    private int age;
    private String name;
    private String gender;//变量

    public void setName(String name){
//        if (name.length()>10){
//            System.out.println("名字长度超过限制");
//            return;
//        }
        this.name=name;
    }
    public String getName(){
        return name;
    }
    //快捷键  Alt键+insert键，选择Getter and Setter


    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
    @Override
    public boolean equals(Object obj){
        //1.如果 obj为null  ----》空指针异常
        if (obj == null) {
            return false;
        }
        //2.如果obj实际上不是Person对象怎么办？-----》类型转换异常
        //instanceof 运算符，判断某个对象是否属于某种类型
        if (!(obj instanceof Person)){
            return false;
        }
        Person p1=(Person)obj;
        return this.id==p1.getId();
    }
/*
    @Override
    public boolean equals(Object o) {
        //if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return id.equals(person.id);
    }
*/

    @Override
    public String toString() {
        return "Person{" +
                "id='" + id + '\'' +
                ", age=" + age +
                ", name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                '}';
    }
}
class PersonTest{
    public static void main(String[] args) {
        Person p=new Person();
        Person p1=new Person();
        p.setName("张三");
        System.out.println(p.getName());

        //重写equals方法之前，equals方法是如何判断的？
        System.out.println(p.equals(p1));
    }
}
